#include "mylabel.h"
#include <iostream>
#include <QDebug>


MyLabel::MyLabel(QWidget* parent) : QLabel(parent)
{}

//创建自定义的类，最主要的目的，是自定义一个析构函数，在析构函数中，完成打印.方便咱们看到最终的自动销毁对象的效果
MyLabel::~MyLabel()
{
    //控制台上有输出信息,说明析构函数是执行了，虽然没有手动delete，但是由于把MyLabel挂到了对象树上此时窗口被销毁的时候，就会自动销毁对象树中的所有对象MyLabel的析构是执行到了
    //预期打印的是被销毁三个中文但是实际的显示效果，出现了乱码
    //本质就是编码方式不匹配
    //如果你字符串本身是utf8编码的，但是终端（控制台）是按照gbk的方式来解析显示的，此时就会出现乱码(拿着utf8这里的数值，去查询gbk的码表)，此时就会出现乱码了
//    std::cout<<"MyLabel 被销毁!"<< std::endl;

    //Qt中有一个东西，QString，是可以帮助我们自动的处理编码方式,不止是QString，Qt也提供了专门用来打印日志的工具，也能自动处理编码方式
    //Qt中提供了一个qDebug（工具，借助这个，就可以完成打印日志的过程.很好的处理字符编码.（不需要程序员关注了，内部帮咱们搞好了)
    //后续再Qt中，如果想通过打印日志的方式，输出一些调试信息，都优先使用qDebug.虽然使用cout也行，但是cout对于编码的处理不太好
    //在windows上容易出现乱码(如果是Linux使用QtCreator，一般就没事了，Linux默认的编码一般都是utf8)

    //使用qDebug，还有一个好处,打印的调试日志，是可以统一进行关闭的
    //输出的日志，是开发阶段，调试程序的时候，使用的，如果你的程序发布给用户，不希望用户看到这些日志的！
    //qDebug可以通过编译开关(宏 QT_NO_DEBUG_OUTPUT)，来实现一键式关闭

    //这个宏,封装了QDebug对象.直接使用qDebug()这个东西就可以当做cout来使用
    qDebug() << "MyLabel 被销毁!";
}


